package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

// gin.Context 是 Gin 里面的核心类型:
// 应该说，你日常最经常的就是和它打交道。
// 它的字面意思就是“上下文”在 Gin 里面，它
// 的核心职责是:
// 处理请求
// 返回响应

// Gin 为每一个 HTTP 方法都提供了一个注册路由的方
// 法。
// 基本上都是两个参数：
// • 路由规则：比如说 /hello 这种静态路由。
// • 处理函数：也就是我们注册的，返回 hello, world
// 的方法。
func main() {
	server := gin.Default() //逻辑上的服务器
	//路由注册 当一个 HTTP 请求，用 GET 方法访问的时候，如果访问路径是 /hello,
	server.GET("/hello", func(c *gin.Context) {
		//就执行这段代码
		c.JSON(200, gin.H{
			"message": "8080",
		})
		c.String(http.StatusOK, "hello,go")
	})
	//路由注册 当一个 HTTP 请求，用 POST 方法访问的时候，如果访问路径是 /post,
	server.POST("/post", func(context *gin.Context) {
		//就执行这段代码
		context.String(http.StatusOK, "hello post")
	})
	//参数路由
	//参数路由的关键是获得参数，Gin 里面提供了 Param 方法。
	server.GET("/user/:name", func(context *gin.Context) {
		name := context.Param("name")
		context.String(http.StatusOK, "hello,这是参数路由"+name)
	})

	server.GET("/views/*.html", func(context *gin.Context) {
		page := context.Param(".html")
		context.String(http.StatusOK, "hello , 这是通配符路由"+page)
	})

	server.GET("/order", func(context *gin.Context) {
		oid := context.Query("id")
		context.String(http.StatusOK, "hello, 这是查询参数"+oid)
	})

	server.Run(":8080") // 监听并在 0.0.0.0:8080 上启动服务
	//go func() {
	//	server1 := gin.Default()
	//
	//	server1.GET("/hello", func(c *gin.Context) {
	//		c.JSON(200, gin.H{
	//			"message": "8081",
	//		})
	//		c.String(http.StatusOK, "hello,go")
	//	})
	//	server1.Run(":8081")
	//}()                 //两个服务器同时运行，监听了两个端口（场景下一个业务，一个给后台）

}
